package week02review;

public class OoDay04 {
    /*
    * 多态:多种形态
    * -向上造型/自动类型转换:
    * --超类型的引用指向派生类的对象，能点出来什么看引用的类型
    *       Animal[] animal = new Animal[5];
    *       animal[0] = new Dog();---向上造型
    * -向下转型/强制类型转换
    * --引用所指向的对象，就是该类型
    * --引用所指向的对象，实现了该接口或继承了该类
    * 强制转换不符合条件的话，会发生ClassCastException类型转换异常
    * 在强转之前可以先通过instanceof来判断引用的对象是否是该类型
    * instanceof返回boolean结果，返回true的条件就是强转成功的条件
    *
    * 成员内部类:类中套类
    * 若A类(Baby)只让B类(Mama)用，并且A类还想访问B类
    *
    * 匿名内部类:
    * --何时用:若想创建一个派生类对象，并且对象只创建一次，可以设计为匿名内部类，可以大大简化代码
    * --匿名内部类不能修改外面局部变量的值
    * --------Aoo o2 = new Aoo(){}
    * --------创建了Aoo的一个派生类，此派生类没有名字，为该派生类创建了一个名叫o2的对象，向上造型为Aoo类型
    *
    * 内部类拥有独立的.class文件
    * */
}
